package cn.biplam.front.template.control.table.cell;

import cn.biplam.common.tools.TOOLS;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.front.html.base.HtmlWindow;
import cn.biplam.front.html.base.Const.Window_Event;
import cn.biplam.front.template.base.Anchor;
import cn.biplam.front.template.base.Tips;

/**
 * 	表格的超级连接单元格
 * @author XiaoRuxing
 * @create下午05:44:52
 * @version 1.0
 */
public class AnchorCell extends Cell{
	
	/** 超级链接 */
	private Anchor anchor;
	/** 超长时的隐藏内容 */
	private Tips allContent;
	/** 表格ID */
	private String tableID;
	private int width;
	private int length;
	
	public AnchorCell(){};
	
	/**
	 * 构造方法
	 * @param anchorText 超级链接单元格文本
	 * @param tableID    单元格所处表格ID
	 * @throws ErrorMessage
	 */
	public AnchorCell(String anchorText,String tableID) throws ErrorMessage{
		this.anchor=new Anchor(null,anchorText);
		this.tableID=tableID;
	}
	
	/**
	 * 构造方法
	 * @param anchorText 超级链接单元格文本
	 * @param textWidth  指定超级链单元格接宽度
	 * @param tableID    单元格所处表格ID
	 * @throws ErrorMessage
	 */
	public AnchorCell(String anchorText,String textWidth,String tableID) throws ErrorMessage{
		this.width=(TOOLS.stringToInt(textWidth)-24)/6;
		this.tableID=tableID;
		_init(anchorText);
	}
	
	/**
	 * 创建文本对象设置文本对象内容
	 * @param sText
	 * @throws ErrorMessage 
	 */
	private void _init(String anchorText) throws ErrorMessage{
		/** 文本长度 */
		int textLength=0;
		textLength=anchorText.getBytes().length;
		/** 文本占位小于指定宽度，直接显示 */
		if(width>textLength){
			this.anchor=new Anchor(null,TOOLS.stringDecoceFromDb(anchorText));
		}else{
			/** 截取文本 */
			this.anchor=new Anchor(null,TOOLS.subString(TOOLS.stringDecoceFromDb(anchorText), width));
			/** 将文本放入DIV中 */
			allContent=new Tips("…",anchorText,tableID);
			this.cellDiv.bind(Window_Event.OnClick, "pts(this,'"+tableID+"')");
		}
	}
	
	/**
	 * 设置宽度
	 */
	private void _setLength(){
		if(allContent!=null){
			this.length = TOOLS.getPxLength(anchor.getLength()+9+allContent.getLength());
		}else{
			this.length = TOOLS.getPxLength(anchor.getLength())+9;
		}
	}
	
	/**
	 * 放入多个html对象到单元格
	 * @param html html对象组
	 * @throws ErrorMessage
	 */
	public void put(HtmlWindow... html) throws ErrorMessage{
		for(HtmlWindow ht:html){
			this.put(ht);
			this.length=this.length+ht.getLength()+9;
		}
	}
	
	/**
	 * 获取单元格宽度 
	 * @return
	 */
	public int _getLength(){
		return this.length;
	}
	
	/**
	 * 返回超级链接单元格
	 * @return
	 * @throws ErrorMessage
	 */
	public void getContent() throws ErrorMessage{
		if(anchor!=null){
			this.put(anchor.get());
			this._setLength();
		}
		if(allContent!=null){
			this.put(allContent.get());
		}
	}
}
